package com.yueyang.sojourn.server.common.baymax.web.result.spi;

import com.yueyang.sojourn.server.common.baymax.web.result.RestResult;

/**
 * 业务码提供者，客户端可以自定义实现，客户端必须提供默认构造函数，因为我们使用</br>
 * ServiceLoader加载所有插件。
 */
public interface RestResultProvider {
  /**
   * 是否支持此来源，如果source可以转换为RestResult，则返回true
   * @param source nerver null
   * @author huisman
   */
  boolean support(Object source);

  /**
   * 生成一个RestMessage，包括code和message
   * @param source nerver null
   * @author huisman
   */
  RestResult produce(Object source);
}
